<?php
require_once("claseConexion.php");

class ServicioEstudiante{	

	private static function obtenerMayorCodigo (){
			//intentar la siguiente funcion
			try {
				$conexion = Conexion::conectar();
				//realizacion de consulta de query en postgre
				$consulta = "select coalesce (max(codigo),0) from sis.t_estudiante";
				$ejecutar = $conexion->query($consulta);
				$consulta=$ejecutar->fetchAll();
			    //si la consulta es correcta dará como return el codigo mayor
			    //que se encuentra en la base de datos.
			    return $consulta [0][0];  					
			}catch(Exception $e){
				throw $e;
			}						
		}




		public static function agregar(){
			try{
				$nArg=func_num_args();
				if ($nArg==1){
					$p=func_get_arg(0);
					if ((is_object($p)) && (get_class($p)=='Estudiante'))
						self::agregarO($p);
				}else{
					if ($nArg!=7)
						throw new Exception ('Cantidad de parámetros incorrecta');
					else
						self::agregarE(func_get_arg(0),func_get_arg(1),func_get_arg(2),func_get_arg(3),
						func_get_arg(4),func_get_arg(5),func_get_arg(6));
				}
			}catch (Exception $e){
				throw $e;
			}
		}



public static function agregarE($cod_instituto,$cod_pensum,$num_carnet,$num_expediente,$cod_rusnies,$cod_estado){
				try{
				//obtener el mayor codigo
				$codigo= self::obtenerMayorCodigo () + 1;
				//preparar conexion
				$conexion = Conexion::conectar();			
				//realizacion de la insercion.
				$ejecutar = $conexion->prepare("insert into sis.t_estudiante (codigo,cod_instituto,cod_pensum,num_carnet,num_expediente,cod_rusnies,cod_estado) values (?,?,?,?,?,?,?)");
				//realizar la ejecucion de la insercion guardandola en un arreglo
				$ejecutar->execute(array ($codigo,$cod_instituto,$cod_pensum,$num_carnet,$num_expediente,$cod_rusnies,$cod_estado));
				if ($ejecutar->rowCount()== 0)
					throw new Exception ("error al agregar los datos de estudiante");		
				}
				catch (Exception $e){
					throw $e;
				}
		}








public static function modificarEPorCodigo($codigo,$num_carnet,$num_expediente,$cod_rusnies,$cod_estado){
			try{
				$conexion = Conexion::conectar();
				$ejecutar = $conexion->prepare("update sis.t_estudiante set num_carnet=?,num_expediente=?,cod_rusnies=?,cod_estado=? where codigo =?");						
				$ejecutar->execute(array($num_carnet,$num_expediente,$cod_rusnies,$cod_estado,$codigo));					

				//si en la modificacion no existen registros mandará
				//la respectiva excepcion.
				if ($ejecutar->rowCount()== 0)
					throw new Exception ("error al modificar estudiante por codigo ");
			}catch(Exception $e){
				throw $e;
			}											
		}

public static function eliminarEPorNumCarnet ($num_carnet){
			try{
				
				$conexion = Conexion::conectar();
				$ejecutar = $conexion->prepare("delete from sis.t_estudiante where num_carnet = ?");
				$ejecutar->execute(array ($num_carnet) );
				//si en la eliminacion no existen registros mandará
				//la respectiva excepcion.
				if ($ejecutar->rowCount()== 0)
					throw new Exception ("error al eliminar persona por  su numero de carnet ");
			}catch(Exception $e){
				throw $e;
			}
		}


public static function eliminarEPorNumExp ($num_expediente){
			try{
				
				$conexion = Conexion::conectar();
				$ejecutar = $conexion->prepare("delete from sis.t_estudiante where num_expediente = ?");
				$ejecutar->execute(array ($num_expediente) );
				//si en la eliminacion no existen registros mandará
				//la respectiva excepcion.
				if ($ejecutar->rowCount()== 0)
					throw new Exception ("error al eliminar persona por su numero de expediente ");
			}catch(Exception $e){
				throw $e;
			}
		}	

public static function eliminarEPorCodRus ($cod_rusnies){
			try{
				
				$conexion = Conexion::conectar();
				$ejecutar = $conexion->prepare("delete from sis.t_estudiante where cod_rusnies = ?");
				$ejecutar->execute(array ($cod_rusnies) );
				//si en la eliminacion no existen registros mandará
				//la respectiva excepcion.
				if ($ejecutar->rowCount()== 0)
					throw new Exception ("error al eliminar persona por su codigo rusnies ");
			}catch(Exception $e){
				throw $e;
			}
		}		




}
?>